package com.zz.springboot.processor.oneToOne;

import com.zz.springboot.exception.BizException;
import com.zz.springboot.processor.DataProcessor;
import com.zz.springboot.resp.enums.RespCodeEnum;
import com.zz.springboot.util.DataDealUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
@Slf4j
public class OneToOneDataProcessor implements DataProcessor {
    @Override
    public List<String> process(String data) {
        List<String> dataList = new ArrayList<>();
        //支持如下格式：
        //1--10,2+++20,3///30,4**40,5—50,6——60
        //7 -- 70, 8 +++ 80,9 ///90,10** 100,11—110,12—— 120
        //13号130，14号 140，15 号150
        data = data.replace("号", "-").
                replaceAll("(\\b\\d+)\\s*[\\-—+*xX×/]+\\s*(\\d+\\b)", "$1:$2").
                /* 隔开方式 */
                        replace(",", " ").          //支持英文逗号“,”隔开，如“1/20,3/30”
                        replace("，", " ").                 //支持中文逗号“，”隔开，如“1/20，3/30”
                        replace(".", " ").                  //支持英文句号“.”隔开，如“1/20.3/30”
                        replace("。", " ").                 //支持中文句号“。”隔开，如“1/20。3/30”
                        replace("、", " ");                 //支持中文顿号“、”隔开，如“1/20、3/30”

        String[] numArr = data.split("\\s+");
        if (DataDealUtils.hasDuplicates(numArr)) {
            log.error("******本组号码[{}]中存在重复的号码，请先检查调整！！！", numArr);
            throw new BizException(RespCodeEnum.DUPLICATE_NUM);
        }
        for (String s : numArr) {
            dataList.add(s);
        }
        return dataList;
    }
}
